import { userAccountCheck } from '@/api/users'

export default {
  // 校验规则 ：返回true就是校验成功，返回字符串就是失败，字符串的值就是失败的信息
  account(value) {
    if (!value) return '请输入用户名'
    // 规则：字母开头，6-20 个字符
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) {
      return '字母开头且6-20个字符'
    }
    return true
  },
  // 完善信息的时候验证用户名是否唯一
  async accountApi(value) {
    if (!value) return '请输入用户名'
    // 规则：字母开头，6-20 个字符
    if (!/^[a-zA-Z]\w{5,19}$/.test(value)) {
      return '字母开头且6-20个字符'
    }
    // 服务端校验
    const { result } = await userAccountCheck(value)
    if (result.valid) return '用户名已经存在'
    return true
  },
  password(value) {
    if (!value) return '请输入密码'
    // 规则：6-24个字符
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    return true
  },
  // 验证两次密码是否输入正确
  rePassword(value, { form }) {
    if (!value) return '请输入用户名'
    // 规则：6-24个字符
    if (!/^\w{6,24}$/.test(value)) return '密码是6-24个字符'
    if (value !== form.password) return '两次输入的密码不一致'
    return true
  },
  mobile(value) {
    if (!value) return '请输入手机号'
    // 规则：1开头  第二位3-9 9位数字
    if (!/^1[3-9]\d{9}$/.test(value)) return '手机号格式错误'
    return true
  },
  code(value) {
    if (!value) return '请输入验证码'
    if (!/^\d{6}$/.test(value)) return '请输入正确的验证码'
    return true
  },
  isAgree(value) {
    if (!value) return '请勾选用户协议'
    return true
  }
}
